/* // 深、浅拷贝
var user1 = {
    name: '123',
    age: 20,
    children: [
        {
            name: 'abc',
        }
    ]
}
var user2 = { ...user1 }// ...扩展运算符只能拷贝一层
var user3 = JSON.parse(JSON.stringify(user1))// json.parse(json.stringify()) 层层拷贝
user2.children[0].name = '2222'
user3.children[0].name = '121212'
console.log(user1); // 2222
console.log(user2); // 2222
console.log(user3); // 121212 */


/* //  解构赋值
var arr = [1, 2, 3]
var [a, b, c, d = 4] = arr
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3
console.log(d); // 4   可以设置初始值 */


/* // call、apply、bind
function Person() {
    this.name = '123';
    this.say = function () {
        console.log('说话');
    }
}
function Student() {
    this.age = 20;
    Person.call(this)  // call 将父类的this指向第一个参数
    // Person.apply(this) // apply 将父类的this指向第一个参数
    // Person.bind(this)() // bind 将父类的this指向第一个参数，它返回的是一个函数，需要调用一下
}
var s = new Student
s.say() // 说话 */


// 冒泡排序
var arr = [1, 5, 7, 2, 0, 55, 2, 3, 6]
for (var i = 0; i < arr.length - 1; i++) {
    for (var j = 0; j < arr.length - 1; j++) {
        if (arr[j] > arr[j + 1]) {
            var t;
            t = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = t;
        }
    }
}
console.log(arr); // 0 1 2 2 3 5 6 7 55


// 选择排序
var arr = [1, 5, 7, 2, 0, 55, 2, 3, 6]
for (var i = 0; i < arr.length - 1; i++) {
    var t = i;
    for (var j = i + 1; j <= arr.length - 1; j++) {
        if (arr[t] < arr[j]) {
            t = j
        }
    }
    if (t != i) {
        var n;
        n = arr[i];
        arr[i] = arr[t];
        arr[t] = n;
    }
}
console.log(arr); // 55 7 6 5 3 2 2 1 0



